cmake_minimum_required(VERSION 3.10)

set(LIB_SRC_DIR "${PROJECT_SOURCE_DIR}/PhysLeo")                                #设置待编译源文件目录

file(                                                                           #利用glob命令读取所有源文件list
    GLOB_RECURSE LIB_SRC 
    LIST_DIRECTORIES false
    CONFIGURE_DEPENDS
    "${LIB_SRC_DIR}/*.c*"
    "${LIB_SRC_DIR}/*.h*"
)

add_library(PhysLeo STATIC ${LIB_SRC})                                          #添加编译目标 静态链接库

foreach(SRC IN ITEMS ${LIB_SRC})                                                #为VS工程添加filter 方便查看文件结构目录
    get_filename_component(SRC_PATH "${SRC}" PATH)
    file(RELATIVE_PATH SRC_PATH_REL "${LIB_SRC_DIR}" "${SRC_PATH}")
    string(REPLACE "/" "\\" GROUP_PATH "${SRC_PATH_REL}")
    source_group("${GROUP_PATH}" FILES "${SRC}")
endforeach()

if(WIN32)
target_compile_options(PhysLeo PRIVATE -Xcompiler "/wd 4819")                   #禁止编译时报告文件编码不是unicode的warning，由于cuda头文件都不是unicode。使编译报错更清晰
endif()
set_target_properties(PhysLeo PROPERTIES CUDA_RESOLVE_DEVICE_SYMBOLS ON)        #cmake 会自动延迟cuda dlink操作直到静态库被编译成动态库或者exe，
                                                                                #但这样影响了后面其他工程对PhysLeo.lib的引用，现在还有些原因未明，暂时在编译成库之前开启dlink